package com.farm2.llm.client;

import com.plexpt.chatgpt.ChatGPT;
import com.plexpt.chatgpt.ChatGPTStream;
import com.plexpt.chatgpt.entity.chat.ChatCompletion;
import com.plexpt.chatgpt.entity.chat.ChatCompletionResponse;
import com.plexpt.chatgpt.entity.chat.Message;
import com.plexpt.chatgpt.listener.AbstractStreamListener;
import com.plexpt.chatgpt.listener.ConsoleStreamListener;
import okhttp3.sse.EventSource;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;

import static java.util.stream.Collectors.toList;

public class OpenAIClientExample {
//    public static void main(String[] args) {
//        ChatGPT chatGPT = ChatGPT.builder()
//                .apiKey("sk-**")
//                .timeout(900).apiHost("https://dashscope.aliyuncs.com/compatible-mode/")
//                .build()
//                .init();
//        Message system = Message.ofSystem("你现在是一个诗人，专门写七言绝句");
//        Message message = Message.of("写一段七言绝句诗，题目是：火锅！");
//
//        ChatCompletion chatCompletion = ChatCompletion.builder()
//                .model("qwen-plus")
//                .messages(Arrays.asList(system, message))
//                .maxTokens(3000)
//                .temperature(0.9)
//                .build();
//        try {
//            ChatCompletionResponse response = chatGPT.chatCompletion(chatCompletion);
//            System.out.println(response.toPlainString());
//        } catch (Exception e) {
//            e.printStackTrace();
//            System.err.println("Error occurred: " + e.getMessage());
//        }
//
//    }

    public static void main(String[] args) {

        ChatGPTStream chatGPTStream = ChatGPTStream.builder()
                .timeout(600)
                .apiKey("sk-**")
                       //sk-**
                .apiHost("http://192.168.0.107:11434/")
                //        https://api.deepseek.com/
                .build()
                .init();

        chatGPTStream.streamChatCompletion(ChatCompletion.builder().model("deepseek-r1:32b")
                .messages(Arrays.asList(Message.of("用户体验优化 -在编辑器中增加提示语，例如： -\"推荐使用纯文本格式粘贴，避免格式混乱。\" -\"支持从Excel直接复制表格内容并插入。\"\n" +
                        "\n" +
                        "通过对上述问题的解决和优化，可以显著提升在线超文本编辑器对带格式文本或表格的操作体验，使其更加友好和高效。")))
                .build(), new AbstractStreamListener() {

            @Override
            public void onMsg(String s) {
                System.out.print(s);

            }

            @Override
            public void onClosed(EventSource eventSource) {
                System.out.println("----------关闭---------------");
                eventSource.cancel();
            }

            @Override
            public void onError(Throwable throwable, String s) {

            }
        });
    }






}
